#include <func.h>

int g_value = 1; // 数据段

int main(int argc, char* argv[])
{
	int l_value = 10; // 栈
	int* h_value = (int*)malloc(sizeof(int));
	*h_value = 100;

	// idiom 
	pid_t pid = fork();
	switch (pid) {
	case -1:	// 失败
		error(1, errno, "fork");
	case 0:		// 子进程
		g_value += 6;
		l_value += 6;
		*h_value += 6;
		printf("Child: g_value = %d, l_value = %d, h_value = %d\n", 
			   g_value, l_value, *h_value);
		exit(0);

	default:	// 父进程
		sleep(2);
		printf("Parent: g_value = %d, l_value = %d, h_value = %d\n", 
			   g_value, l_value, *h_value);
	}

    return 0;
}

